package ldh;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;

import ldh.serialize.enumeration.NoSerialize;
import ldh.serialize.enumeration.Serialize;

import com.google.gson.Gson;

public class LdhUser {

	private String name;
	
	private Short age;
	
	private Boolean isProtected;
	
	private SexEnum sex;
	
	private Character test;
	
	private String id;
	
	private List<String> address;
	
	private Map<String, String> props;
	
	private Date createTime;
	
	private Level level;
	
	private User user;
	
	private User otherUser;
	
	private LdhUser childer;

	private LocalDate localDate;

	private LocalDateTime localDateTime;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public List<String> getAddress() {
		return address;
	}

	public void setAddress(List<String> address) {
		this.address = address;
	}

	public Map<String, String> getProps() {
		return props;
	}

	public void setProps(Map<String, String> props) {
		this.props = props;
	}

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

//	@Serialize(clazz=String.class)
	public Short getAge() {
		return age;
	}

	public void setAge(Short age) {
		this.age = age;
	}

	public Boolean getIsProtected() {
		return isProtected;
	}

	public void setIsProtected(Boolean isProtected) {
		this.isProtected = isProtected;
	}

	public SexEnum getSex() {
		return sex;
	}

	public void setSex(SexEnum sex) {
		this.sex = sex;
	}

	public Character getTest() {
		return test;
	}

	public void setTest(Character test) {
		this.test = test;
	}

//	@NoSerialize
	public Level getLevel() {
		return level;
	}

	public void setLevel(Level level) {
		this.level = level;
	}
	
	public String toString() {
		Gson gson = new Gson();
		return gson.toJson(this);
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public User getOtherUser() {
		return otherUser;
	}

	public void setOtherUser(User otherUser) {
		this.otherUser = otherUser;
	}

	public LdhUser getChilder() {
		return childer;
	}

	public void setChilder(LdhUser childer) {
		this.childer = childer;
	}

	public LocalDate getLocalDate() {
		return localDate;
	}

	public void setLocalDate(LocalDate localDate) {
		this.localDate = localDate;
	}

	public LocalDateTime getLocalDateTime() {
		return localDateTime;
	}

	public void setLocalDateTime(LocalDateTime localDateTime) {
		this.localDateTime = localDateTime;
	}
}
